// packageOnlineStore/pages/productList/productList.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    baseUrl:'',//全局连接地址
    currentTab: 0, // 初始化为0，表示默认综合标签处于激活状态
    priceSortStatus: 0, // 价格排序状态，0表示未选中，1升序，2降序
    priceSortImage: '/images/jiage.png', // 初始显示未选中价格的图片
    minPrice: '',//最低价
    maxPrice: '',//最高价
    isSelectProductShow: false, // 控制选择商品框是否显示，初始为false，隐藏状态
    pageNum:1,//页码
    dataList:[],//商品列表(所有)
    totalPageCount:0, //总页数 
    isLoading: false, //节流阀标识
    optionsNum:'',//传过来的数
    productService:[],//服务类型列表
    serviceId:'',//选择的服务类型id
    productType:[],//商品规格列表
    typeId:'',//选择的规格类型id
    filterList:[],//筛选过后的商品列表
    priceChange:'',//价格区间选择
    priceOptions: [
      {id:"1",range: "1-50",percentage: "20%选择"},
      {id:"2",range: "50-100",percentage: "30%选择"},
      {id:"3",range: "100-150",percentage: "60%选择"}
    ]//价格选择器
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const app = getApp();
    const baseUrl=app.globalConfig.baseUrl //获取本地连接地址
    this.setData({
      optionsNum:options.id,
      baseUrl:app.globalConfig.baseUrl,
    })
    if(options.id==1){
      this.getData(1)
    }
    if(options.id==2){
      this.getData(2)
    }
    if(options.id==3){
      this.getData(3)
    }
  },
  //封装方法
  getData(type){
    const baseUrl=this.data.baseUrl
    //节流阀开始
    this.setData({
      isLoading: true
    })
    //加载时显示loading框
    wx.showLoading({
      title: '数据正在加载',
    })
    if(type==1){
      this.isType(1)
    }
    if(type==2){
      this.isType(2)
    }
    if(type==3){
      this.isType(3)
    }
  },
  changeTab: function (e) {
    const index = e.currentTarget.dataset.index; // 获取点击标签的索引
    if (index == 2) {
      let newStatus;
      if (this.data.priceSortStatus === 0) {
        newStatus = 1;
        this.setData({
          priceSortImage: '/images/zhangjia.png',
          priceSortStatus: newStatus
        });
      } else if (this.data.priceSortStatus === 1) {
        newStatus = 2;
        this.setData({
          priceSortImage: '/images/jiangjia.png',
          priceSortStatus: newStatus
        });
      } else {
        newStatus = 1;
        this.setData({
          priceSortImage: '/images/zhangjia.png',
          priceSortStatus: newStatus
        });
      }
      this.setData({
        currentTab: index,
        priceSortStatus: newStatus
      });
    } else {
      this.setData({
        currentTab: index,
        priceSortStatus: 0,
        priceSortImage: '/images/jiage.png'
      });
    }
  },
  // 新增的点击事件处理函数
  showSelectProduct(e) {
    const baseUrl=this.data.baseUrl //获取本地连接地址
    const token = wx.getStorageSync('token');
    this.setData({
        isSelectProductShow: true // 新增一个变量来控制显示隐藏，初始设为false，点击后设为true显示
    });
    wx.request({
      url: baseUrl+'/product/productService/list',
      method:'GET',
      header:{
        'Authorization': 'Bearer\u0020' + token
      },
      success:(res)=>{
        this.setData({
          productService:res.data.rows
        })
      },
    })
    wx.request({
      url: baseUrl+'/product/productType/list',
      method:'GET',
      data:{
        pageNum:1,
        pageSize:100,
      },
      header:{
        'Authorization': 'Bearer\u0020' + token
      },
      success:(res)=>{
        this.setData({
          productType:res.data.rows
        })
      },
    })
  },
  serviceChange(num){
    this.setData({
      serviceId:num.currentTarget.dataset.id
    })
  },
  close(e){
    this.setData({
      isSelectProductShow:false,
    })
  },
  //价格区间输入触发事件
  setMinPrice(price){
    this.setData({
      minPrice:price.detail.value
    })
  },
  setMaxPrice(price){
    this.setData({
      maxPrice:price.detail.value
    })
  },
  handleOptionClick(e){
    const price=e.currentTarget.dataset.id
    const selectedPriceOption = this.data.priceOptions.find(item => item.id === price); // 根据点击的id找到对应的价格区间对象
    if (selectedPriceOption) {
      const [min, max] = selectedPriceOption.range.split('-'); // 拆分价格区间字符串
      this.setData({
        priceChange: price,
        minPrice: min, // 将拆分出来的最小值赋给minPrice
        maxPrice: max // 将拆分出来的最大值赋给maxPrice
      });
    }
  },
  //规格选择触发事件
  typeChange(e){
    this.setData({
      typeId:e.currentTarget.dataset.id
    })
  },
  //提交触发事件
  confirmFilters(){
    const app = getApp();
    const baseUrl=this.data.baseUrl //获取本地连接地址
    const minPrice = this.data.minPrice;
    const maxPrice = this.data.maxPrice;
    const serviceId=this.data.serviceId;
    const typeId=this.data.typeId;
    const token = wx.getStorageSync('token');
    if(minPrice!=null || serviceId!=null){
      wx.request({
        url: baseUrl+'/product/productDetail/list',
        method:'GET',
        data:{
          pageNum:1,
          pageSize:999,
          'params[beginProductPrice]':minPrice,
          'params[endProductPrice]':maxPrice,
          serviceId:serviceId
        },
        header:{
          'Authorization': 'Bearer\u0020' + token
        },
        success:(res)=>{
          this.setData({
            dataList:res.data.rows,
            isSelectProductShow:false
          })
        },
      })
    }
    if(typeId!=null){
      wx.request({
        url: baseUrl+'/product/detailType/list',
        method:'GET',
        data:{
          pageNum:1,
          pageSize:999,
          productTypeId:typeId
        },
        header:{
          'Authorization': 'Bearer\u0020' + token
        },
        success:(res)=>{
          this.setData({
            dataList:res.data.rows.productDetail,
            isSelectProductShow:false
          })
        },
      })
    }
    this.setData({
      minPrice:'',
      maxPrice:'',
      serviceId:'',
      priceChange:'',
      typeId:'',
    })
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.setData({
      pageNum:1,//页码
      dataList:[],
      totalPageCount:0 //总页数 
    })
    this.getData(this.data.optionsNum)
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
  //判断节流阀
    if(this.data.isLoading){
      return;
    }
   //没有更多数据，提示
   if(this.data.pageNum>=this.data.totalPageCount){
     wx.showToast({
       title: '没有更多数据了！',
       icon:'none'
     })
     return;
   }
   //当上提触底的时候，加载当前页+1（下一页）的数据
   this.setData({
     pageNum:this.data.pageNum + 1
   })
   this.getData(this.data.optionsNum)
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },
  isType(type){
    const baseUrl=this.data.baseUrl //获取本地连接地址
    const token = wx.getStorageSync('token');
    if(type==1){
      wx.request({
        url: baseUrl+'/product/productDetail/list',
        data:{
          pageNum:this.data.pageNum,
          pageSize:6,
        },
        header:{
          'Authorization': 'Bearer\u0020' + token
        },
        method:'GET',
        success:(res)=>{
          // 遍历商品列表数据
          const newProductDetailList = res.data.rows.map((product) => {
            // 假设价格字段名为price，使用toFixed方法保留两位小数
            product.productPrice = parseFloat(product.productPrice).toFixed(2);
            return product;
          });
          //把请求得到的数据【追加】到data中的articleList变量
          this.setData({
            dataList:this.data.dataList.concat(newProductDetailList),
            totalPageCount:Math.ceil(res.data.total/6)
          })
        },
        complete:(res)=>{
          //加载数据完成后关闭loading框
          wx.hideLoading()
          //关闭下拉刷新
          wx.stopPullDownRefresh()
          //数据加载完成关闭节流阀
          this.setData({
            isLoading: false
          })
        },
      })
    }
    if(type==2){
      wx.request({
        url: baseUrl+'/product/productDetail/list',
        data:{
          pageNum:this.data.pageNum,
          pageSize:6,
          featuredItems:0,
        },
        header:{
          'Authorization': 'Bearer\u0020' + token
        },
        method:'GET',
        success:(res)=>{
          // 遍历商品列表数据
          const newProductDetailList = res.data.rows.map((product) => {
            // 假设价格字段名为price，使用toFixed方法保留两位小数
            product.productPrice = parseFloat(product.productPrice).toFixed(2);
            return product;
          });
          //把请求得到的数据【追加】到data中的articleList变量
          this.setData({
            dataList:this.data.dataList.concat(newProductDetailList),
            totalPageCount:Math.ceil(res.data.total/6)
          })
        },
        complete:(res)=>{
          //加载数据完成后关闭loading框
          wx.hideLoading()
          //关闭下拉刷新
          wx.stopPullDownRefresh()
          //数据加载完成关闭节流阀
          this.setData({
            isLoading: false
          })
        },
      })
    }
    if(type==3){
      wx.request({
        url: baseUrl+'/product/productDetail/list',
        data:{
          pageNum:this.data.pageNum,
          pageSize:6,
          trendingRecommendations:0,
        },
        method:'GET',
        header:{
          'Authorization': 'Bearer\u0020' + token
        },
        success:(res)=>{
          // 遍历商品列表数据
          const newProductDetailList = res.data.rows.map((product) => {
            // 假设价格字段名为price，使用toFixed方法保留两位小数
            product.productPrice = parseFloat(product.productPrice).toFixed(2);
            return product;
          });
          //把请求得到的数据【追加】到data中的articleList变量
          this.setData({
            dataList:this.data.dataList.concat(newProductDetailList),
            totalPageCount:Math.ceil(res.data.total/6)
          })
        },
        complete:(res)=>{
          //加载数据完成后关闭loading框
          wx.hideLoading()
          //关闭下拉刷新
          wx.stopPullDownRefresh()
          //数据加载完成关闭节流阀
          this.setData({
            isLoading: false
          })
        },
      })
    }
  }
})
